package com.softtown.modules.workflow.dao;

import com.softtown.common.dao.BaseDao;
import com.softtown.modules.workflow.entity.SwfDocPhaseDefEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author: Dingyayong
 * @Date: 2019/8/21 19:51
 * @Description:
 */
@Mapper
public interface SwfDocPhaseDefDao extends BaseDao<SwfDocPhaseDefEntity> {

    /**
     * 获取该公司出差申请审批段
     *
     * @param compId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDef(Long compId);

    /**
     * 获取该公司差旅报销审批段
     *
     * @param compId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getTravelDocPhaseDef(Long compId);

    /**
     * 通过审批段定义id获取该公司出差申请审批段
     *
     * @param phaseId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefByphaseId(Long phaseId);

    /**
     * 查找该公司单据审批段定义
     * @param compId
     * @param param
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author fuming
     * @Date 2020/5/27 17:20
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefList(@Param("compId") Long compId, @Param("param") String param);

    /**
     * 通过审批类型获取该公司出差申请审批段
     *
     * @param docTypeValue
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> checkDocPhaseDef(@Param("compId") Long compId, @Param("docTypeValue") String docTypeValue);

    /**
     * 根据该公司单据类型获取审批段设置
     *
     * @param compId
     * @param docTypeValue
     * @return SwfPhaseNameDefEntity
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefByDocType(@Param("compId") Long compId, @Param("docTypeValue") String docTypeValue);

    /**
     * 获取该公司借款申请审批段
     *
     * @param compId
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @author fuming
     * @date 2019/10/29 11:04
     */
    List<SwfDocPhaseDefEntity> getAdvDocPhaseDef(@Param("compId") Long compId);

    /**
     * 查找该公司差旅审批段定义
     *
     * @param compId
     * @return List<SwfDocPhaseDefEntity>
     * @author Dingyayong
     * @date 2019/8/22 10:08
     */
    List<SwfDocPhaseDefEntity> getActHeadDocPhaseDefList(Long compId);

    /**
     * 查找该公司单据类型对应的审批段定义
     * @param compId
     * @param docTypeValue
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author fuming
     * @Date 2020/5/27 17:20
     */
    List<SwfDocPhaseDefEntity> getDocPhaseDefListByDocType(@Param("compId") Long compId, @Param("docTypeValue") String docTypeValue);

    /**
     * 删除修改审批段定义
     *
     * @param swfDocPhaseDefEntity SwfDocPhaseDefEntity
     * @return
     * @author Dingyayong
     * @date 2019/11/14 14:33
     */
    void updateDocPhaseDef(SwfDocPhaseDefEntity swfDocPhaseDefEntity);

    /**
     * 获取该公司费用申请审批段
     *
     * @param compId 公司id
     * @return java.util.List<com.softtown.modules.entity.SwfDocPhaseDefEntity>
     * @Author fuming
     * @Date 2019/12/19 17:49
     */
    List<SwfDocPhaseDefEntity> selectGenlDocPhaseDef(Long compId);
}
